本篇文章同步發布於 Python 使用 openpyxl 建立 Excel 資料群組與凍結視窗【Python 處理 Excel #24】
這篇文章介紹如何使用 Python 的 openpyxl 實現 Excel 的資料群組 (大綱),以及如何使用 openpyxl 凍結 Excel 視窗。這兩個功能都是讓人在查看 Excel 檔案時能更聚焦於資料重點的小技巧,把不重要的資料隱藏起來,使人一目了然知道當前資料的主題是什麼。
文章中使用 example.xlsx 作為說明用的案例資料。example.xlsx 的內容如下:
order_id | create_date | customer_name | product_name | order_quantity | unit_price | order_amount |
---|---|---|---|---|---|---|
10000 | 2024/6/5 | Amy Chen | Laptop Pro | 45 | 1000 | 45000 |
10001 | 2024/6/6 | Grace Liu | Laptop Pro | 165 | 1050 | 173250 |
10002 | 2024/6/13 | Ivy Yang | Gaming Desktop | 265 | 1200 | 318000 |
10003 | 2024/6/15 | David Lee | Laptop Pro | 120 | 1000 | 120000 |
10004 | 2024/6/16 | Amy Chen | Laptop Pro | 115 | 950 | 109250 |
10005 | 2024/6/21 | Amy Chen | Gaming Desktop | 60 | 1200 | 72000 |
Excel 中的資料群組功能能將資料列或資料欄位折疊或展開,透過資料群組功能,使用者可以隱藏或顯示特定的資料範圍,提升檔案的整潔度與可讀性。
凍結視窗讓使用者在瀏覽 Excel 工作表時保持某些資料列或資料欄位始終可見,例如凍結首列讓表頭在捲動頁面時依然保持顯示,使用者就可以隨時參考欄位標題,不用回到工作表的頂部。
以下程式碼案例介紹如何使用 openpyxl 建立 Excel 資料群組,案例中會群組 Excel 檔案中的 order_quantity
和 unit_price
欄位:
import openpyxl
def group_columns(workbook, sheet_name):
"""群組指定的欄位
Args:
workbook: openpyxl.Workbook 物件,已讀取的 Excel 活頁簿
sheet_name: str,工作表名稱
"""
sheet = workbook[sheet_name]
# 群組 order_quantity (E 欄) 和 unit_price (F 欄)
sheet.column_dimensions.group('E', 'F', hidden=True)
E
欄和 F
欄進行群組,並設置為隱藏狀態。以下程式碼介紹如何凍結 Excel 工作表的首列:
def freeze_top_row(workbook, sheet_name):
"""凍結指定工作表的首列
Args:
workbook: openpyxl.Workbook 物件,已讀取的 Excel 活頁簿
sheet_name: str,工作表名稱
"""
sheet = workbook[sheet_name]
# 凍結首列
sheet.freeze_panes = 'A2'
sheet.freeze_panes
屬性指定的欲凍結的儲存格。這裡將視窗凍結在 A2
,表示首列會被固定,使用者捲動工作表時仍然可以看到表頭。以下程式碼將資料群組與凍結視窗功能整合在一個名稱為 process_excel
的函數中,如果想要嘗試使用這兩個功能,可以使用以下程式碼測試:
import openpyxl
def process_excel(file_path, output_path):
"""處理 Excel 檔案,包含資料群組和凍結視窗
Args:
file_path: str,輸入的 Excel 檔案路徑
output_path: str,輸出的 Excel 檔案路徑
"""
# 讀取 Excel 檔案
workbook = openpyxl.load_workbook(file_path)
sheet_name = workbook.sheetnames[0]
# 執行群組欄位
group_columns(workbook, sheet_name)
# 執行凍結視窗
freeze_top_row(workbook, sheet_name)
# 儲存處理後的 Excel 檔案
workbook.save(output_path)
def group_columns(workbook, sheet_name):
"""將指定的欄位進行群組操作"""
sheet = workbook[sheet_name]
sheet.column_dimensions.group('E', 'F', hidden=True)
def freeze_top_row(workbook, sheet_name):
"""凍結指定工作表的首列"""
sheet = workbook[sheet_name]
sheet.freeze_panes = 'A2'
# 執行函數,處理 example.xlsx 並輸出結果
process_excel('example.xlsx', 'output.xlsx')
group_columns(workbook, sheet_name)
。freeze_top_row(workbook, sheet_name)
。本篇文章同步發布於 Python 使用 openpyxl 建立 Excel 資料群組與凍結視窗【Python 處理 Excel #24】